package com.jdk.demo.fileChannel.transferTo;

import java.io.RandomAccessFile;
import java.nio.channels.FileChannel;

// transferTo(position, count, WritableByteChannel)方法的作用是将字节从此通道的文件传输到给定的可写入字节通道。
// 它的功能相当于write方法，只不过是将通道中的数据传输到另一个通道中，而不是缓冲区中
// 此方法不修改此通道的位置，如果给定的位置大于该文件的当前大小，则不传输任何字节，否则从目标通道的position位置起始开始写入各字节，然后将该位置增加写入的字节数
// 1、position：文件中的位置，从此位置开始传输，必须为非负数
// 2、count：要传输的最大字节数，必须为非负数
// 3、dest：目标通道

// 如果count的字节个数大于position到size的字节个数，，则传输通道的size-position个字节数到dest通道的当前位置
// 如果count的字节个数小于或等于position到size的字节个数，则传输count个字节数到dest通道的当前位置
public class Test11_1 {
	
	public static void main(String[] args) throws Exception {
		RandomAccessFile fileA = new RandomAccessFile("k1.txt", "rw");
		RandomAccessFile fileB = new RandomAccessFile("k2.txt", "rw");
		
		FileChannel fileChannel1 = fileA.getChannel();
		FileChannel fileChannel2 = fileB.getChannel();
		
		fileChannel2.position(3);
		// position参数是针对调用者
		fileChannel1.transferTo(2, 3, fileChannel2);
		
		// k2内容为"123cde789"
		fileChannel1.close();
		fileChannel2.close();
		fileA.close();
		fileB.close();
	}

}
